Week 2 - Blink Using OS
tm4c123gh6pm_startup_css.c
Go to the documentation of this file.
1 
2 /**************************************************
3  * Texas A&M University
4  * Electronic Systems Engineering Technology
5  * ENTC-489 Embedded Real Time Software Development
6  * Author: willey
7  * File: tm4c123gh6pm_startup_css.c
8  **************************************************/
16 #include <stdint.h>
17 #include "inc/hw_types.h"
18 #include "uC-LIB\lib_def.h"
19 #include "uCOS-II\Source\os.h"
20 
21 /**************************************************/
25 /**************************************************/
26 
27 //*****************************************************************************
28 //
29 // External declaration for the reset handler that is to be called when the
30 // processor is started
31 //
32 //*****************************************************************************
33 extern void _c_int00(void);
34 
35 extern uint32_t __STACK_TOP;
36 
37 //*****************************************************************************
38 //
39 // Forward declaration of the default fault handlers.
40 //
41 //*****************************************************************************
42 static void App_Reset_ISR(void);
43 static void App_NMI_ISR(void);
44 static void App_Fault_ISR(void);
45 static void App_MemFault_ISR(void);
46 static void App_BusFault_ISR(void);
47 static void App_UsageFault_ISR(void);
48 static void App_Spurious_ISR(void);
49 
50 //*****************************************************************************
51 //
52 // The vector table. Note that the proper constructs must be placed on this to
53 // ensure that it ends up at physical address 0x0000.0000 or at the start of
54 // the program if located at a start address other than 0.
55 //
56 //*****************************************************************************
57 #pragma DATA_SECTION(g_pfnVectors, ".intvecs")
58 void (* const g_pfnVectors[])(void) =
59 {
60  (void (*)(void))((uint32_t)&__STACK_TOP), /* 0, SP start value. */
61  App_Reset_ISR, /* 1, PC start value. */
62  App_NMI_ISR, /* 2, NMI. */
63  App_Fault_ISR, /* 3, Hard Fault. */
64  App_MemFault_ISR, /* 4, Memory Management. */
65  App_BusFault_ISR, /* 5, Bus Fault. */
66  App_UsageFault_ISR, /* 6, Usage Fault. */
67  App_Spurious_ISR, /* 7, Reserved. */
68  App_Spurious_ISR, /* 8, Reserved. */
69  App_Spurious_ISR, /* 9, Reserved. */
70  App_Spurious_ISR, /* 10, Reserved. */
71  App_Spurious_ISR, /* 11, SVCall. */
72  App_Spurious_ISR, /* 12, Debug Monitor. */
73  App_Spurious_ISR, /* 13, Reserved. */
74  OS_CPU_PendSVHandler, /* 14, PendSV Handler. */
75  OS_CPU_SysTickHandler, /* 15, uC/OS-III Tick ISR Handler. */
76 
77  App_Spurious_ISR, /* 16, INTISR[ 0] GPIO Port A. */
78  App_Spurious_ISR, /* 17, INTISR[ 1] GPIO Port B. */
79  App_Spurious_ISR, /* 18, INTISR[ 2] GPIO Port C. */
80  App_Spurious_ISR, /* 19, INTISR[ 3] GPIO Port D. */
81  App_Spurious_ISR, /* 20, INTISR[ 4] GPIO Port E. */
82  App_Spurious_ISR, /* 21, INTISR[ 5] UART0. */
83  App_Spurious_ISR, /* 22, INTISR[ 6] UART1. */
84  App_Spurious_ISR, /* 23, INTISR[ 7] SSI0. */
85  App_Spurious_ISR, /* 24, INTISR[ 8] I2C0. */
86  App_Spurious_ISR, /* 25, INTISR[ 9] PWM Fault. */
87  App_Spurious_ISR, /* 26, INTISR[ 10] PWM Generator 0. */
88  App_Spurious_ISR, /* 27, INTISR[ 11] PWM Generator 1. */
89  App_Spurious_ISR, /* 28, INTISR[ 12] PWM Generator 2. */
90  App_Spurious_ISR, /* 29, INTISR[ 13] QEI0. */
91  App_Spurious_ISR, /* 30, INTISR[ 14] ADC0 Sequence 0. */
92  App_Spurious_ISR, /* 31, INTISR[ 15] ADC0 Sequence 1. */
93  App_Spurious_ISR, /* 32, INTISR[ 16] ADC0 Sequence 2. */
94  App_Spurious_ISR, /* 33, INTISR[ 17] ADC0 Sequence 3. */
95  App_Spurious_ISR, /* 34, INTISR[ 18] Watchdog Timers 0 and 1. */
96  App_Spurious_ISR, /* 35, INTISR[ 19] 16/32-Bit Timer 0A. */
97  App_Spurious_ISR, /* 36, INTISR[ 20] 16/32-Bit Timer 0B. */
98  App_Spurious_ISR, /* 37, INTISR[ 21] 16/32-Bit Timer 1A. */
99  App_Spurious_ISR, /* 38, INTISR[ 22] 16/32-Bit Timer 1B. */
100  App_Spurious_ISR, /* 39, INTISR[ 23] 16/32-Bit Timer 2A. */
101  App_Spurious_ISR, /* 40, INTISR[ 24] 16/32-Bit Timer 2B. */
102  App_Spurious_ISR, /* 41, INTISR[ 25] Analog Comparator 0. */
103  App_Spurious_ISR, /* 42, INTISR[ 26] Analog Comparator 1. */
104  App_Spurious_ISR, /* 43, INTISR[ 27] Analog Comparator 2. */
105  App_Spurious_ISR, /* 44, INTISR[ 28] System Control. */
106  App_Spurious_ISR, /* 45, INTISR[ 29] Flash Memory Control. */
107  App_Spurious_ISR, /* 46, INTISR[ 30] GPIO Port F. */
108  App_Spurious_ISR, /* 47, INTISR[ 31] GPIO Port G. */
109  App_Spurious_ISR, /* 48, INTISR[ 32] GPIO Port H. */
110  App_Spurious_ISR, /* 49, INTISR[ 33] UART2. */
111  App_Spurious_ISR, /* 50, INTISR[ 34] SSI1. */
112  App_Spurious_ISR, /* 51, INTISR[ 35] 16/32-Bit Timer 3A. */
113  App_Spurious_ISR, /* 52, INTISR[ 36] 16/32-Bit Timer 3B. */
114  App_Spurious_ISR, /* 53, INTISR[ 37] I2C1. */
115  App_Spurious_ISR, /* 54, INTISR[ 38] CAN0. */
116  App_Spurious_ISR, /* 55, INTISR[ 39] CAN1. */
117  App_Spurious_ISR, /* 56, INTISR[ 40] Ethernet MAC. */
118  App_Spurious_ISR, /* 57, INTISR[ 41] HIB(Power Island). */
119  App_Spurious_ISR, /* 58, INTISR[ 42] USB MAC. */
120  App_Spurious_ISR, /* 59, INTISR[ 43] PWM Generator 3. */
121  App_Spurious_ISR, /* 60, INTISR[ 44] uDMA 0 Software. */
122  App_Spurious_ISR, /* 61, INTISR[ 45] uDMA 0 Error. */
123  App_Spurious_ISR, /* 62, INTISR[ 46] ADC1 Sequence 0. */
124  App_Spurious_ISR, /* 63, INTISR[ 47] ADC1 Sequence 1. */
125  App_Spurious_ISR, /* 64, INTISR[ 48] ADC1 Sequence 2. */
126  App_Spurious_ISR, /* 65, INTISR[ 49] ADC1 Sequence 3. */
127  App_Spurious_ISR, /* 66, INTISR[ 50] EPI0. */
128  App_Spurious_ISR, /* 67, INTISR[ 51] GPIO Port J. */
129  App_Spurious_ISR, /* 68, INTISR[ 52] GPIO Port K. */
130  App_Spurious_ISR, /* 69, INTISR[ 53] GPIO Port L. */
131  App_Spurious_ISR, /* 70, INTISR[ 54] SSI2. */
132  App_Spurious_ISR, /* 71, INTISR[ 55] SSI3. */
133  App_Spurious_ISR, /* 72, INTISR[ 56] UART3. */
134  App_Spurious_ISR, /* 73, INTISR[ 57] UART4. */
135  App_Spurious_ISR, /* 74, INTISR[ 58] UART5. */
136  App_Spurious_ISR, /* 75, INTISR[ 59] UART6. */
137  App_Spurious_ISR, /* 76, INTISR[ 60] UART7. */
138  App_Spurious_ISR, /* 77, INTISR[ 61] I2C 2. */
139  App_Spurious_ISR, /* 78, INTISR[ 62] I2C 3. */
140  App_Spurious_ISR, /* 79, INTISR[ 63] Timer 4A. */
141  App_Spurious_ISR, /* 80, INTISR[ 64] Timer 4B. */
142  App_Spurious_ISR, /* 81, INTISR[ 65] Timer 5A. */
143  App_Spurious_ISR, /* 82, INTISR[ 66] Timer 5B. */
144  App_Spurious_ISR, /* 83, INTISR[ 67] FP Exception(imprecise). */
145 
146  App_Spurious_ISR, /* 84, INTISR[ 68] Reserved. */
147  App_Spurious_ISR, /* 85, INTISR[ 69] Reserved. */
148 
149  App_Spurious_ISR, /* 86, INTISR[ 70] I2C 4. */
150  App_Spurious_ISR, /* 87, INTISR[ 71] I2C 5. */
151  App_Spurious_ISR, /* 88, INTISR[ 72] GPIO Port M. */
152  App_Spurious_ISR, /* 89, INTISR[ 73] GPIO Port N. */
153 
154  App_Spurious_ISR, /* 90, INTISR[ 74] Reserved. */
155 
156  App_Spurious_ISR, /* 91, INTISR[ 75] Tamper. */
157  App_Spurious_ISR, /* 92, INTISR[ 76] GPIO Port P(Summary or P0). */
158  App_Spurious_ISR, /* 93, INTISR[ 77] GPIO Port P1. */
159  App_Spurious_ISR, /* 94, INTISR[ 78] GPIO Port P2. */
160  App_Spurious_ISR, /* 95, INTISR[ 79] GPIO Port P3. */
161  App_Spurious_ISR, /* 96, INTISR[ 80] GPIO Port P4. */
162  App_Spurious_ISR, /* 97, INTISR[ 81] GPIO Port P5. */
163  App_Spurious_ISR, /* 98, INTISR[ 82] GPIO Port P6. */
164  App_Spurious_ISR, /* 99, INTISR[ 83] GPIO Port P7. */
165  App_Spurious_ISR, /* 100, INTISR[ 84] GPIO Port Q(Summary or Q0). */
166  App_Spurious_ISR, /* 101, INTISR[ 85] GPIO Port Q1. */
167  App_Spurious_ISR, /* 102, INTISR[ 86] GPIO Port Q2. */
168  App_Spurious_ISR, /* 103, INTISR[ 87] GPIO Port Q3. */
169  App_Spurious_ISR, /* 104, INTISR[ 88] GPIO Port Q4. */
170  App_Spurious_ISR, /* 105, INTISR[ 89] GPIO Port Q5. */
171  App_Spurious_ISR, /* 106, INTISR[ 90] GPIO Port Q6. */
172  App_Spurious_ISR, /* 107, INTISR[ 91] GPIO Port Q7. */
173  App_Spurious_ISR, /* 108, INTISR[ 92] GPIO Port R. */
174  App_Spurious_ISR, /* 109, INTISR[ 93] GPIO Port S. */
175  App_Spurious_ISR, /* 110, INTISR[ 94] SHA/MD5. */
176  App_Spurious_ISR, /* 111, INTISR[ 95] AES. */
177  App_Spurious_ISR, /* 112, INTISR[ 96] DES. */
178  App_Spurious_ISR, /* 113, INTISR[ 97] LCD. */
179  App_Spurious_ISR, /* 114, INTISR[ 98] 16/32-Bit Timer 6A. */
180  App_Spurious_ISR, /* 115, INTISR[ 99] 16/32-Bit Timer 6B. */
181  App_Spurious_ISR, /* 116, INTISR[100] 16/32-Bit Timer 7A. */
182  App_Spurious_ISR, /* 117, INTISR[101] 16/32-Bit Timer 7B. */
183  App_Spurious_ISR, /* 118, INTISR[102] I2C 6. */
184  App_Spurious_ISR, /* 119, INTISR[103] I2C 7. */
185 
186  App_Spurious_ISR, /* 120, INTISR[104] Reserved. */
187 
188  App_Spurious_ISR, /* 121, INTISR[105] 1-Wire. */
189 
190  App_Spurious_ISR, /* 122, INTISR[106] Reserved. */
191  App_Spurious_ISR, /* 123, INTISR[107] Reserved. */
192  App_Spurious_ISR, /* 124, INTISR[108] Reserved. */
193 
194  App_Spurious_ISR, /* 125, INTISR[109] I2C 8. */
195  App_Spurious_ISR, /* 126, INTISR[110] I2C 9. */
196  App_Spurious_ISR /* 127, INTISR[111] GPIO T. */
197 };
198 
199 /***********************************************************************
200 ** Procedure: App_Reset_ISR
201 ** Arguments: void
202 ** Returns: static void
203 ** Description: Jumps to CCS C initialization routine
204 ***********************************************************************/
205 static void App_Reset_ISR ( void )
206 {
207  __asm(" .global _c_int00\n"
208  " b.w _c_int00");
209 } /* App_Reset_ISR() */
210 
211 /***********************************************************************
212 ** Procedure: App_NMI_ISR
213 ** Arguments: void
214 ** Returns: static void
215 ** Description: Non-Maskable Interrupt handler (place holder for now)
216 ***********************************************************************/
217 static void App_NMI_ISR ( void )
218 {
219  while (1)
220  {
221  /* stop here and wait to get noticed */
222  }
223 } /* App_NMI_ISR() */
224 
225 /***********************************************************************
226 ** Procedure: App_Fault_ISR
227 ** Arguments: void
228 ** Returns: static void
229 ** Description: Handle an unexpected hard fault by waiting around
230 ***********************************************************************/
231 static void App_Fault_ISR ( void )
232 {
233  while (1)
234  {
235  /* stop here and wait to get noticed */
236  }
237 } /* App_Fault_ISR() */
238 
239 /***********************************************************************
240 ** Procedure: App_BusFault_ISR
241 ** Arguments: void
242 ** Returns: static void
243 ** Description: Handle a bus fault by waiting around
244 ***********************************************************************/
245 static void App_BusFault_ISR ( void )
246 {
247  while (1)
248  {
249  /* stop here and wait to get noticed */
250  }
251 } /* App_BusFault_ISR() */
252 
253 /***********************************************************************
254 ** Procedure: App_UsageFault_ISR
255 ** Arguments: void
256 ** Returns: static void
257 ** Description: Handle a usage fault by waiting around
258 ***********************************************************************/
259 static void App_UsageFault_ISR ( void )
260 {
261  while (1)
262  {
263  /* stop here and wait to get noticed */
264  }
265 } /* App_UsageFault_ISR() */
266 
267 /***********************************************************************
268 ** Procedure: App_MemFault_ISR
269 ** Arguments: void
270 ** Returns: static void
271 ** Description: Handle a memory fault by waiting around
272 ***********************************************************************/
273 static void App_MemFault_ISR ( void )
274 {
275  while (1)
276  {
277  /* stop here and wait to get noticed */
278  }
279 } /* App_MemFault_ISR() */
280 
281 /***********************************************************************
282 ** Procedure: App_Spurious_ISR
283 ** Arguments: void
284 ** Returns: static void
285 ** Description: Handle an unexpected interrupt by hanging around
286 ***********************************************************************/
287 static void App_Spurious_ISR ( void )
288 {
289  while (1)
290  {
291  /* stop here and wait to get noticed */
292  }
293 } /* App_Spurious_ISR() */
294 
295 
296 
297 /**************************************************/
299 /* Close of Doxygen group Interrupts
300  **************************************************/